package com.bingo.generate.comm.util;

import java.io.FileInputStream;
import java.io.InputStream;
import java.net.URI;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

//  使用这个文件需要注意
public class PathUtils {

    //  我的配置文件的定位
    public static Path cofDir=null;

    /**
     * 返回资源文件的路径
     * @param resFileName 资源文件的相对路径字符串
     */
    public static Path getResPath(String resFileName){
        try {
            //  先寻找resouce文件
            URI uri = ClassLoader.getSystemResource(resFileName).toURI();
            Path resPath= Paths.get(uri);
            System.out.println("项目的配置文件路径:"+resPath);
            return resPath;
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("该项目没有配置文件:"+resFileName);
            return null;// 说明不存在
        }
    }

    /**
     * 返回配置文件的路径
     * @param cofFileName 资源文件的相对路径字符串
     */
    public static Path getCofPath(String cofFileName){
        return Paths.get(cofDir.toAbsolutePath().toString(),cofFileName);
    }

    public static void defaultCof(){
        cofDir=Paths.get("C:\\temp\\gererate-path");
        if(!Files.exists(cofDir)){
            throw new RuntimeException("请保证存在C:\\temp\\gererate-path");
        }
    }

    public static Path append(Path oriPath,String... strArr){
        Path path=null;
        if(strArr.length==0){
            return oriPath;
        }
        String oriPathStr = oriPath.toAbsolutePath().toString();
        StringBuilder sb=new StringBuilder();
        for (String s : strArr) {
            sb.append("/");
            sb.append(s);
        }
//        sb.deleteCharAt(0);
        sb.insert(0,oriPathStr);
        path=Paths.get(sb.toString());
        return path;
    }

    /*
    public void setCofDir(Path cofDir) {
        if(Files.exists(cofDir)){
            throw new RuntimeException("该路径不存在");
        }
        System.out.println("警告:XXX-正在修改定位路径:");
        this.cofDir = cofDir;
        try {
            Runtime.getRuntime().exec("cmd set classpath="+"");
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
    */

    public static void main(String[] args) {
        //  获取当前用户根目录（应用文件夹主路径）
        System.out.println(System.getProperty("user.dir"));
        //  获取操作用户
    }

    public static SafeProperties toProperties(Path path){
        SafeProperties safeProperties=new SafeProperties();
        try(InputStream is=new FileInputStream(path.toFile())) {
            safeProperties.load(is);
        }catch (Exception e){
            throw new RuntimeException(e);
        }
        return safeProperties;
    }

}
